#include <stdio.h>

int main() {
    char a = 'a', b = 'b';
    char *x = &a, *y = &b;
    
    // const char **p
    const char **p1 = &x;
    *p1 = &b;
    // **p1 = 'c'; 错误：指向的内容不可改
    
    // char *const *p
    char *const *p2 = &x;
    // *p2 = &b; 错误：中间指针不可改
    **p2 = 'c';
    
    // char **const p
    char **const p3 = &x;
    // p3 = &y; 错误：顶层指针不可改
    *p3 = &b;
    **p3 = 'd';
    
    printf("%c %c %c\n", **p1, **p2, **p3);
    return 0;
}

// 看const是否有*，有几个就是几级指针